用简单代码初识策略设计模式

588次阅读
没有评论

共计 1146 个字符,预计需要花费 3 分钟才能阅读完成。

定义一个方法,且该方法能够根据所传递参数对象的不同而具有不同行为

public abstract class Processor {
        public String name() {
            return getClass().getSimpleName();
        }
        // 抽象方法
        public abstract Object process(Object input);
}
/**
 * 大写策略实现类
 */
public class Upcase extends Processor {
    @Override
    public Object process(Object input) {
        return ((String) input).toUpperCase();
    }
}
/**
 * 小写策略实现类
 */
public class Downcase extends Processor {
    @Override
    public Object process(Object input) {
        return ((String) input).toLowerCase();
    }
}
/**
 * split策略实现类
 */
public class Splitcase extends Processor {
    @Override
    public Object process(Object input) {
        return Arrays.toString(((String) input).split(" "));
    }
}
import java.util.Arrays;

/**
 * @author plm
 * @create 2021/3/14 16:02
 */
public class Apply {
    // 策略设计模式方法入参对象Processor不同,处理String的实现逻辑不通
    public static void process(Processor processor, String input) {
        System.out.print(input + "-----");
        System.out.print(processor.name() + "-----");
        System.out.println(processor.process(input));
    }

    public static void main(String[] args) {
        process(new Upcase(), "WAsd"); // 大写策略
        process(new Downcase(), "waSD"); // 小写策略
        process(new Splitcase(), "w as d"); // 截断策略
    }
}
/* 输出
WAsd-----Upcase-----WASD
waSD-----Downcase-----wasd
w as d-----Splitcase-----[w, as, d]
*/

本例中策略即为 Processor对象;
本例针对字符串操作,提供三种不同的策略;

正文完
 0
裴先生
版权声明:本站原创文章,由 裴先生 2021-03-14发表,共计1146字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
本站勉强运行: